package com.cn.wanxi.service.impl;

import com.cn.wanxi.dao.UserDao;
import com.cn.wanxi.dao.impl.UserImpl;
import com.cn.wanxi.result.ResultModel;
import com.cn.wanxi.model.UserModel;
import com.cn.wanxi.service.UserService;

import java.util.List;

public class UserServiceImpl implements UserService {

    /**
     * 先判断验证码是否正确
     * 如果正确：则根据用户名和密码查询数据库
     * 如果数据库里面没有数据，则提示登陆失败
     * 如果有数据匹配，则提示登陆成功
     * 如果不正确，则返回一个错误的验证码提示
     *
     * @param userModel
     * @return
     */
    @Override
    public ResultModel login(UserModel userModel) {
//        ResultModel resultModel = new ResultModel();
        String msg="";
        if (userModel.getCode().equals(userModel.getSessionCode())) {
//            resultModel.setMsg("successCode");
//            需要查询数据库，既然要匹配数据，则需要进入数据实现层
            UserDao userDao = new UserImpl();
//            根据用户名和密码查询
//            查询的结果应该是什么？
//            如果有一条数据，则放入UserModel，
//            如果没有，则UserModel为null
            UserModel model = userDao.findByUsernameAndPassword(userModel);
//            if(条件)如果为true 则执行 {}如果为false则实现else{}里面的代码
            if (model == null) {
                msg="error";
            } else {
                msg="success";
            }
        } else {
            msg="errorCode";
        }
        return ResultModel.getModel(msg);
    }

    @Override
    public ResultModel findAll(UserModel userModel) {
//        ResultModel resultModel = new ResultModel();
        UserDao userDao = new UserImpl();
//        查询所有的返回值，可能会有很多条数据，所以应该用list来接收
        List<UserModel> list = userDao.findAll(userModel);
//        resultModel.setData(list);
//        resultModel.setCode(0);
//        resultModel.setMsg("success");
//        为什么要查询总条数，因为我们以后会用到分页
//        有多少页：总条数/每一页显示的条数
        int count = userDao.getCount(userModel);
//        resultModel.setCount(count);
        return ResultModel.getModel(count,list);
    }

    @Override
    public ResultModel del(UserModel userModel) {
//        ResultModel resultModel = new ResultModel();
        UserDao userDao = new UserImpl();
        int count = userDao.del(userModel);
//        resultModel.setCode(0);
//        resultModel.setCount(count);
        return ResultModel.getModel(count);
    }

    @Override
    public ResultModel add(UserModel userModel) {
//        ResultModel resultModel = new ResultModel();
        UserDao userDao = new UserImpl();
        int count = userDao.add(userModel);
//        resultModel.setCode(0);
//        resultModel.setCount(count);
//        return resultModel;
        return ResultModel.getModel(count);

    }

    @Override
    public ResultModel findById(UserModel userModel) {
//        ResultModel resultModel = new ResultModel();
        UserDao userDao = new UserImpl();
        UserModel model = userDao.findById(userModel);
//        resultModel.setCode(0);
//        resultModel.setData(model);
//        return resultModel;
        return ResultModel.getModel(model);

    }

    @Override
    public ResultModel update(UserModel userModel) {
//        ResultModel resultModel = new ResultModel();
        UserDao userDao = new UserImpl();
        int count = userDao.update(userModel);
//        resultModel.setCode(0);
//        resultModel.setCount(count);
        return ResultModel.getModel(count);
    }

    @Override
    public ResultModel getCount(UserModel userModel) {
//        ResultModel resultModel = new ResultModel();
        UserDao userDao = new UserImpl();
        int count = userDao.getCount(userModel);
//        resultModel.setCode(0);
//        resultModel.setCount(count);
//        return resultModel;
        return ResultModel.getModel(count);
    }
}
